package dominio.investigacion

import dominio.datos.Caracteristica
import dominio.ubicaciones.Pais
import java.util.ArrayList
import java.util.List
import org.uqbar.commons.model.ObservableUtils
import org.uqbar.commons.utils.Observable

@Observable
class Mapamundi {
	
	@Property List<Pais> paises = new ArrayList<Pais>
	@Property Pais paisSeleccionado
	@Property Caso caso
	
	new() {
		this.paises = new ArrayList<Pais>
	}
	
	/*
	new(Caso caso) {
		caso.mapamundi = this
		this.caso = caso
	}
	*/
	
	def eliminarPaisSeleccionado() {
		paisSeleccionado.conexiones.forEach[p | p.borrarConexion(paisSeleccionado) ]
		paises.remove(paisSeleccionado)
		paisSeleccionado = null
		ObservableUtils.firePropertyChanged(this,"paises", paises)
	}
	
	def agregarPais(Pais pais) {
		paises += pais
		ObservableUtils.firePropertyChanged(this,"paises", paises)
	}
	
	def agregarPais(String nombre) {
		agregarPais(nuevoPais => [ it.nombre = nombre ])
	}
	
	def nuevoPais() {
		new Pais => [
			mapamundi = this
			caso = this.caso
		]
	}
	
	def nuevaCaracteristica() {
		new Caracteristica()
	}
	
	def Pais buscarPais(String nombre) {
		paises.findFirst[p | p.nombre == nombre]
	}
	
}